clear; clc; close all;

% 参数设置
a = 0.1;
b = 0.1;
k = 1.85;               % k值
c_values = -0.2:0.001:1; % 参数 c 的变化范围
transient = 200;       % 舍弃的暂态步数
N_total = 1000;        % 用于采样的迭代步数

% 初始状态
x0 = 0.1;
q0 = 0.1;

Purple = [138 43 226]/255;
Pink   = [255 20 147]/255;

% 用于存储绘图数据
c_data = [];  % 存储 c
x_data = [];  % 存储 x
q_data = [];  % 存储 q

% MPTM 迭代函数
func = @mptm;

% 遍历 c 值
for i = 1:length(c_values)
    c_val = c_values(i);
    % 初始化状态
    x = x0;
    q = q0;
    
    % 先迭代 transient 步数，舍弃暂态
    for t = 1:transient
        [x, q] = func(x, q, a, b, c_val, k);
    end
    
    % 继续迭代 N_total 步数并记录
    for t = 1:N_total
        [x, q] = func(x, q, a, b, c_val, k);
        % 记录数据
        c_data(end+1) = c_val;
        x_data(end+1) = x;
        q_data(end+1) = q;
    end
end

% 绘制分岔图
figure; hold on; box on; grid on;
% 绘制 x 的分岔点
plot(c_data, x_data, '.', 'Color', Pink, 'MarkerSize', 1);
% 绘制 q 的分岔点
plot(c_data, q_data, '.', 'Color', Purple, 'MarkerSize', 1);

xlabel('c');
ylabel('x, q');
title('分岔图');
legend({'x (粉色)','q (紫色)'}, 'Location', 'best');
